package org.example.studentmanager.dao;

import org.apache.ibatis.annotations.Param;
import org.example.studentmanager.dto.StudentScoreDTO;
import org.example.studentmanager.entity.*;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;


@Repository
public interface TeacherDao {
    // 更改学生成绩
    void updateScore(Score score);

    // 录入学生成绩
    void insertScore(Score score);

    /**
     * 根据教师id获取教师信息
     * @param id 教师id
     * @return 教师信息
     * */
    Teacher getTeacherInfoById(@Param("id") Integer id);

    /**
     * 根据教师名字查询教师信息
     *
     * */
    Teacher queryTeacherInfoByTeacherName(@Param("name") String teacherName);

    // 查询所有学生的成绩
    List<Score> findAllScores();

    // 查询教师选课
    List<Course> findCourseSelectionsById(@Param("id") Integer id);
    List<StudentScoreDTO> findStudentsByCourseId(@Param("courseId") Integer courseId);
    // 教师选课-单选
    void addCourse(@Param("course_id") Integer courseId, @Param("teacher_id") Integer teacherId);

    /**
     * 根据教师 ID 查询教师信息
     * @param teacherId 教师 ID
     * @return 教师信息
     */
    Teacher queryTeacherByTeacherId(@Param("teacherId") Integer teacherId);

    void addCourse(
            @Param("course_id") Integer courseId,
            @Param("teacher_id") Integer teacherId,
            @Param("selection_date") LocalDateTime selectionDate  // 添加日期参数
    );
}

